La filosofía de Sintaxis Natural afirma que los tipos definidos por el usuario deben comportarse como ciudadanos de primera clase. Al implementar la sobrecarga de operadores, permitimos que las clases usen notación estándar (como + o ==), lo que reduce la carga cognitiva y cumple con el principio de menor sorpresa.
1. Anatomía y Enrutamiento
Un operador es una función con un nombre especial: la palabra clave operador seguida por un símbolo. Un operador unario tiene un operando, mientras que un operador binario tiene dos. Cuando se define como un función miembro, el operando izquierdo se vincula al puntero implícito this (a.operador+(b)). Como un no miembro, ambos son explícitos (operador+(a, b)).
2. Restricciones y Ética
C++ evita la "vandalización del lenguaje": no puedes crear nuevos símbolos (por ejemplo, **) ni redefinir operaciones para tipos integrados (por ejemplo, int + int). La precedencia y asociatividad son inmutables. Principio arquitectónico: Las clases que definen == se integran sin esfuerzo con algoritmos de biblioteca como std::find.